<?php
	require_once("DBConnection.php");
	require_once("ObjectClasses/SessionUser.php");

class LoginHandler{
	
	private $m_LoggedInKey = 'loggedIn';
	private $db = NULL;
	
	const LOGIN_SUCCESS = 0;
	const LOGIN_ERROR = 1;
	
	public function __construct(DBConnection $db){
		$this->db = $db;
	}
	
	/**
	* @return true/false beroende på om användaren är inloggad eller inte
	*/
	public function IsLoggedIn($returnObject = false){
		if(isset($_SESSION[$this->m_LoggedInKey])){
			if($returnObject == true){
				return unserialize($_SESSION[$this->m_LoggedInKey]);
			}else{
				return true;
			}
		}else{
			return false;
		}
	}
	
	/**
	* kollar uppgifterna användarnamn och lösenord och loggar in användaren om dessa stämmer
	*/
	public function DoLogin($userName, $password){

		$sql = "SELECT userid, username, userType FROM user WHERE username = ? AND password = ?";
		
		$stmt = $this->db->Prepare($sql);
		
		$stmt->bind_param('ss', $userName, $password);
		
		$stmt->execute();
		
		$result = $stmt->get_result();
		
		$result = $result->fetch_assoc();
		
		if( $result['username'] !=NULL && $result['userid'] != NULL){
			
			
			
			$obj = new SessionUser($result['username'], $result['userid'], $result['userType']);
			
			$_SESSION[$this->m_LoggedInKey] = serialize($obj);
			return true;
		}
		return false;

	}
	
	
	/**
	 * loggar ut en användare
	 */
	public function DoLogout(){
		unset($_SESSION[$this->m_LoggedInKey]);
	}
	
	public function Test(){
		$this->DoLogout();
		
		if($this->IsLoggedIn() == true){ //kollar om vi är inloggade
			echo 'Ett fel inträffade i utloggningen';
			return false;
		}
		
		if($this->DoLogin('Antonsdf', 'hejp') == true){ //fel användarnamn och fel lösen
			echo 'Inloggning lyckades trots felaktiga uppgifter. vilket är fel.';
			return false;
		}
		
		if($this->DoLogin('Anton', 'hejp') == true){ //rätt anv namn och fel lösen
			echo 'Inloggning lyckades trots felaktiga uppgifter. vilket är fel.';
			return false;
		}
		
		if($this->DoLogin('Anton', 'hej') == false){
			echo 'Inloggningen mislyckades';
			return false;
		}
		
		if($this->IsLoggedIn() == false){
			echo 'Ett fel inträffade. Du är inte inloggad.';
			return false;
		}
		
		$this->DoLogout();
		
		if ($this->IsLoggedIn() == true){ //säkerställer att vi loggades ut
			echo 'Ett fel inträffade. Du är inte inloggad.';
			return false;
		}
		
		return true;
		
	}
	
	
}
?>